home *** CD-ROM | disk | FTP | other *** search
/ 9-Digit Zip Code Directory / 9-Digit Zip Code Directory (American Business Information) (ABIZIP-12).ISO / z4src.zip / GRAPH.H < prev    next >
C/C++ Source or Header  |  1993-11-23  |  18KB  |  486 lines

  1. /***
  2. *graph.h - declare constants, functions, and macros for graphics library
  3. *
  4. *   Copyright (c) 1987 - 1992, Microsoft Corporation.  All rights reserved.
  5. *
  6. *Purpose:
  7. *   This file declares the graphics library functions and the
  8. *   structures and manifest constants that are used with them.
  9. *
  10. ***************************************************************************/
  11.  
  12. #ifndef    _WINDOWS
  13. /* Force graphics.lib to be linked in if graph.h used */
  14. #pragma comment(lib,"graphics.lib")
  15. #endif
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {            /* allow use with C++ */
  19. #endif
  20.  
  21. #if (_MSC_VER <= 600)
  22. #define    __cdecl    _cdecl
  23. #define    __far    _far
  24. #define    __huge    _huge
  25. #endif
  26.  
  27. /* force word packing to avoid possible -Zp override */
  28. #pragma pack(2)
  29.  
  30.  
  31. /* user-visible declarations for Quick-C Graphics Library */
  32.  
  33. #ifndef _VIDEOCONFIG_DEFINED
  34. /* structure for _getvideoconfig() as visible to user */
  35. struct _videoconfig {
  36.     short numxpixels;    /* number of pixels on X axis */
  37.     short numypixels;    /* number of pixels on Y axis */
  38.     short numtextcols;    /* number of text columns available */
  39.     short numtextrows;    /* number of text rows available */
  40.     short numcolors;    /* number of actual colors */
  41.     short bitsperpixel;    /* number of bits per pixel */
  42.     short numvideopages;    /* number of available video pages */
  43.     short mode;        /* current video mode */
  44.     short adapter;        /* active display adapter */
  45.     short monitor;        /* active display monitor */
  46.     short memory;        /* adapter video memory in K bytes */
  47. };
  48. #define _VIDEOCONFIG_DEFINED
  49. #endif
  50.  
  51. #ifndef _XYCOORD_DEFINED
  52. /* return value of _setvieworg(), etc. */
  53. struct _xycoord {
  54.     short xcoord;
  55.     short ycoord;
  56. };
  57. #define _XYCOORD_DEFINED
  58. #endif
  59.  
  60. /* structure for text position */
  61. #ifndef _RCCOORD_DEFINED
  62. struct _rccoord {
  63.     short row;
  64.     short col;
  65. };
  66. #define _RCCOORD_DEFINED
  67. #endif
  68.  
  69. #ifndef __STDC__
  70. /* Non-ANSI names for compatibility */
  71. #define videoconfig    _videoconfig
  72. #define xycoord        _xycoord
  73. #define rccoord        _rccoord
  74. #endif
  75.  
  76.  
  77. /* ERROR HANDLING */
  78. short __far __cdecl _grstatus(void);
  79.  
  80. /* Error Status Information returned by _grstatus() */
  81.  
  82. /* successful */
  83. #define    _GROK                        0
  84.  
  85. /* errors */
  86. #define _GRERROR                    (-1)
  87. #define    _GRMODENOTSUPPORTED        (-2)
  88. #define    _GRNOTINPROPERMODE          (-3)
  89. #define _GRINVALIDPARAMETER         (-4)
  90. #define    _GRFONTFILENOTFOUND         (-5)
  91. #define    _GRINVALIDFONTFILE          (-6)
  92. #define _GRCORRUPTEDFONTFILE        (-7)
  93. #define _GRINSUFFICIENTMEMORY       (-8)
  94. #define _GRINVALIDIMAGEBUFFER       (-9)
  95.  
  96. /* warnings */
  97. #define _GRNOOUTPUT                  1
  98. #define _GRCLIPPED                   2
  99. #define _GRPARAMETERALTERED          3
  100. #define _GRTEXTNOTSUPPORTED          4
  101.  
  102.  
  103. /* SETUP AND CONFIGURATION */
  104.  
  105. short __far __cdecl _setvideomode(short);
  106. short __far __cdecl _setvideomoderows(short,short); /* return rows; 0 if error */
  107.  
  108. /* arguments to _setvideomode() */
  109. #define _MAXRESMODE    (-3)    /* graphics mode with highest resolution */
  110. #define _MAXCOLORMODE    (-2)    /* graphics mode with most colors */
  111. #define _DEFAULTMODE    (-1)    /* restore screen to original mode */
  112. #define _TEXTBW40    0    /* 40-column text, 16 grey */
  113. #define _TEXTC40    1    /* 40-column text, 16/8 color */
  114. #define _TEXTBW80    2    /* 80-column text, 16 grey */
  115. #define _TEXTC80    3    /* 80-column text, 16/8 color */
  116. #define _MRES4COLOR    4    /* 320 x 200, 4 color */
  117. #define _MRESNOCOLOR    5    /* 320 x 200, 4 grey */
  118. #define _HRESBW        6    /* 640 x 200, BW */
  119. #define _TEXTMONO    7    /* 80-column text, BW */
  120. #define _HERCMONO    8    /* 720 x 348, BW for HGC */
  121. #define _MRES16COLOR    13    /* 320 x 200, 16 color */
  122. #define _HRES16COLOR    14    /* 640 x 200, 16 color */
  123. #define _ERESNOCOLOR    15    /* 640 x 350, BW */
  124. #define _ERESCOLOR    16    /* 640 x 350, 4 or 16 color */
  125. #define _VRES2COLOR    17    /* 640 x 480, BW */
  126. #define _VRES16COLOR    18    /* 640 x 480, 16 color */
  127. #define _MRES256COLOR    19    /* 320 x 200, 256 color */
  128. #define _ORESCOLOR    64    /* 640 x 400, 1 of 16 colors (Olivetti only) */
  129.  
  130. /* the following 8 modes require VESA SuperVGA BIOS extensions */
  131. #define    _ORES256COLOR    0x0100    /* 640 x 400, 256 color */
  132. #define    _VRES256COLOR    0x0101    /* 640 x 480, 256 color */
  133.  
  134. /* WARNING: DO NOT attempt to set the following modes without ensuring that
  135.    your monitor can safely handle that resolution.  Otherwise, you may risk
  136.    damaging your display monitor!  Consult your owner's manual for details.
  137.    Note: _MAXRESMODE and _MAXCOLORMODE never select SRES, XRES, or ZRES modes */
  138.  
  139. /* requires NEC MultiSync 3D or equivalent, or better */
  140. #define    _SRES16COLOR    0x0102    /* 800 x 600, 16 color */
  141. #define    _SRES256COLOR    0x0103    /* 800 x 600, 256 color */
  142.  
  143. /* requires NEC MultiSync 4D or equivalent, or better */
  144. #define    _XRES16COLOR    0x0104    /* 1024 x 768, 16 color */
  145. #define    _XRES256COLOR    0x0105    /* 1024 x 768, 256 color */
  146.  
  147. /* requires NEC MultiSync 5D or equivalent, or better */
  148. #define    _ZRES16COLOR    0x0106    /* 1280 x 1024, 16 color */
  149. #define    _ZRES256COLOR    0x0107    /* 1280 x 1024, 256 color */
  150.  
  151.  
  152. short __far __cdecl _setactivepage(short);
  153. short __far __cdecl _setvisualpage(short);
  154. short __far __cdecl _getactivepage(void);
  155. short __far __cdecl _getvisualpage(void);
  156.  
  157. /* _videoconfig adapter values */
  158. /* these manifest constants can be used to determine the type of the active  */
  159. /* adapter, using either simple comparisons or the bitwise-AND operator (&)  */
  160. #define _MDPA        0x0001    /* Monochrome Display Adapter          (MDPA) */
  161. #define _CGA        0x0002    /* Color Graphics Adapter          (CGA)  */
  162. #define _EGA        0x0004    /* Enhanced Graphics Adapter          (EGA)  */
  163. #define _VGA        0x0008    /* Video Graphics Array              (VGA)  */
  164. #define _MCGA        0x0010    /* MultiColor Graphics Array          (MCGA) */
  165. #define _HGC        0x0020    /* Hercules Graphics Card          (HGC)  */
  166. #define _OCGA        0x0042    /* Olivetti Color Graphics Adapter    (OCGA) */
  167. #define _OEGA        0x0044    /* Olivetti Enhanced Graphics Adapter (OEGA) */
  168. #define _OVGA        0x0048    /* Olivetti Video Graphics Array      (OVGA) */
  169. #define _SVGA        0x0088    /* Super VGA with VESA BIOS support   (SVGA) */
  170.  
  171. /* _videoconfig monitor values */
  172. /* these manifest constants can be used to determine the type of monitor in */
  173. /* use, using either simple comparisons or the bitwise-AND operator (&) */
  174. #define _MONO        0x0001    /* Monochrome */
  175. #define _COLOR        0x0002    /* Color (or Enhanced emulating color) */
  176. #define _ENHCOLOR    0x0004    /* Enhanced Color */
  177. #define _ANALOGMONO    0x0008    /* Analog Monochrome only */
  178. #define _ANALOGCOLOR    0x0010    /* Analog Color only */
  179. #define _ANALOG        0x0018    /* Analog Monochrome and Color modes */
  180.  
  181. struct _videoconfig __far * __far __cdecl _getvideoconfig(struct _videoconfig __far *);
  182.  
  183.  
  184. /* COORDINATE SYSTEMS */
  185.  
  186. struct _xycoord __far __cdecl _setvieworg(short, short);
  187. #define _setlogorg _setvieworg        /* obsolescent */
  188.  
  189. struct _xycoord __far __cdecl _getviewcoord(short, short);
  190. #define _getlogcoord _getviewcoord    /* obsolescent */
  191.  
  192. struct _xycoord __far __cdecl _getphyscoord(short, short);
  193.  
  194. void __far __cdecl _setcliprgn(short, short, short, short);
  195. void __far __cdecl _setviewport(short, short, short, short);
  196.  
  197.  
  198. /* OUTPUT ROUTINES */
  199.  
  200. /* control parameters for _ellipse, _rectangle, _pie and _polygon */
  201. #define _GBORDER    2    /* draw outline only */
  202. #define _GFILLINTERIOR    3    /* fill using current fill mask */
  203.  
  204. /* parameters for _clearscreen */
  205. #define _GCLEARSCREEN    0
  206. #define _GVIEWPORT    1
  207. #define _GWINDOW    2
  208.  
  209. void __far __cdecl _clearscreen(short);
  210.  
  211. struct _xycoord __far __cdecl _moveto(short, short);
  212. struct _xycoord __far __cdecl _getcurrentposition(void);
  213.  
  214. short __far __cdecl _lineto(short, short);
  215. short __far __cdecl _rectangle(short, short, short, short, short);
  216. short __far __cdecl _polygon(short, const struct _xycoord __far *, short);
  217. short __far __cdecl _arc(short, short, short, short, short, short, short, short);
  218. short __far __cdecl _ellipse(short, short, short, short, short);
  219. short __far __cdecl _pie(short, short, short, short, short, short, short, short, short);
  220.  
  221. short __far __cdecl _getarcinfo(struct _xycoord __far *, struct _xycoord __far *, struct _xycoord __far *);
  222.  
  223. short __far __cdecl _setpixel(short, short);
  224. short __far __cdecl _getpixel(short, short);
  225. short __far __cdecl _floodfill(short, short, short);
  226.  
  227.  
  228. /* PEN COLOR, LINE STYLE, WRITE MODE, FILL PATTERN */
  229.  
  230. short __far __cdecl _setcolor(short);
  231. short __far __cdecl _getcolor(void);
  232.  
  233. void __far __cdecl _setlinestyle(unsigned short);
  234. unsigned short __far __cdecl _getlinestyle(void);
  235.  
  236. short __far __cdecl _setwritemode(short);
  237. short __far __cdecl _getwritemode(void);
  238.  
  239. void __far __cdecl _setfillmask(const unsigned char __far *);
  240. unsigned char __far * __far __cdecl _getfillmask(unsigned char __far *);
  241.  
  242.  
  243. /* COLOR SELECTION */
  244.  
  245. long __far __cdecl _setbkcolor(long);
  246. long __far __cdecl _getbkcolor(void);
  247.  
  248. long __far __cdecl _remappalette(short, long);
  249. short __far __cdecl _remapallpalette(const long __far *);
  250. short __far __cdecl _selectpalette(short);
  251.  
  252.  
  253. /* TEXT */
  254. /* parameters for _displaycursor */
  255. #define _GCURSOROFF    0
  256. #define _GCURSORON    1
  257.  
  258. /* parameters for _wrapon */
  259. #define _GWRAPOFF    0
  260. #define _GWRAPON    1
  261.  
  262.  
  263. /* direction parameters for _scrolltextwindow */
  264. #define _GSCROLLUP    1
  265. #define _GSCROLLDOWN    (-1)
  266.  
  267. /* request maximum number of rows in _settextrows and _setvideomoderows */
  268. #define _MAXTEXTROWS    (-1)
  269.  
  270. short __far __cdecl _settextrows(short); /* returns # rows set; 0 if error */
  271. void __far __cdecl _settextwindow(short, short, short, short);
  272. void __far __cdecl _gettextwindow(short __far *, short __far *, short __far *, short __far *);
  273. void __far __cdecl _scrolltextwindow(short);
  274. void __far __cdecl _outmem(const char __far *, short);
  275. void __far __cdecl _outtext(const char __far *);
  276. short __far __cdecl _inchar(void);
  277. short __far __cdecl _wrapon(short);
  278.  
  279. short __far __cdecl _displaycursor(short);
  280. short __far __cdecl _settextcursor(short);
  281. short __far __cdecl _gettextcursor(void);
  282.  
  283. struct _rccoord __far __cdecl _settextposition(short, short);
  284. struct _rccoord __far __cdecl _gettextposition(void);
  285.  
  286. short __far __cdecl _settextcolor(short);
  287. short __far __cdecl _gettextcolor(void);
  288.  
  289.  
  290. /* SCREEN IMAGES */
  291.  
  292. void __far __cdecl _getimage(short, short, short, short, char __huge *);
  293. void __far __cdecl _putimage(short, short, char __huge *, short);
  294. long __far __cdecl _imagesize(short, short, short, short);
  295.  
  296. /* "action verbs" for _putimage() and _setwritemode() */
  297. #define _GPSET        3
  298. #define _GPRESET    2
  299. #define _GAND        1
  300. #define _GOR        0
  301. #define _GXOR        4
  302.  
  303.  
  304. /* Color values are used with _setbkcolor in graphics modes and also by
  305.    _remappalette and _remapallpalette.  Also known as palette colors.
  306.    Not to be confused with color indices (aka. color attributes).  */
  307.  
  308. /* universal color values (all color modes): */
  309. #define _BLACK        0x000000L
  310. #define _BLUE        0x2a0000L
  311. #define _GREEN        0x002a00L
  312. #define _CYAN        0x2a2a00L
  313. #define _RED        0x00002aL
  314. #define _MAGENTA    0x2a002aL
  315. #define _BROWN        0x00152aL
  316. #define _WHITE        0x2a2a2aL
  317. #define _GRAY        0x151515L
  318. #define _LIGHTBLUE    0x3F1515L
  319. #define _LIGHTGREEN    0x153f15L
  320. #define _LIGHTCYAN    0x3f3f15L
  321. #define _LIGHTRED    0x15153fL
  322. #define _LIGHTMAGENTA    0x3f153fL
  323. #define _YELLOW        0x153f3fL
  324. #define _BRIGHTWHITE    0x3f3f3fL
  325.  
  326. /* the following is obsolescent and defined only for backward compatibility */
  327. #define _LIGHTYELLOW    _YELLOW
  328.  
  329. /* mono mode F (_ERESNOCOLOR) color values: */
  330. #define _MODEFOFF    0L
  331. #define _MODEFOFFTOON    1L
  332. #define _MODEFOFFTOHI    2L
  333. #define _MODEFONTOOFF    3L
  334. #define _MODEFON    4L
  335. #define _MODEFONTOHI    5L
  336. #define _MODEFHITOOFF    6L
  337. #define _MODEFHITOON    7L
  338. #define _MODEFHI    8L
  339.  
  340. /* mono mode 7 (_TEXTMONO) color values: */
  341. #define _MODE7OFF    0L
  342. #define _MODE7ON    1L
  343. #define _MODE7HI    2L
  344.  
  345.  
  346. /* Warning:  these '_xy' entrypoints are undocumented.
  347.    They may or may not be supported in future versions. */
  348. struct _xycoord __far __cdecl _moveto_xy(struct _xycoord);
  349. short __far __cdecl _lineto_xy(struct _xycoord);
  350. short __far __cdecl _rectangle_xy(short,struct _xycoord,struct _xycoord);
  351. short __far __cdecl _arc_xy(struct _xycoord, struct _xycoord, struct _xycoord, struct _xycoord);
  352. short __far __cdecl _ellipse_xy(short, struct _xycoord, struct _xycoord);
  353. short __far __cdecl _pie_xy(short, struct _xycoord, struct _xycoord, struct _xycoord, struct _xycoord);
  354. short __far __cdecl _getpixel_xy(struct _xycoord);
  355. short __far __cdecl _setpixel_xy(struct _xycoord);
  356. short __far __cdecl _floodfill_xy(struct _xycoord, short);
  357. void __far __cdecl _getimage_xy(struct _xycoord,struct _xycoord, char __huge *);
  358. long __far __cdecl _imagesize_xy(struct _xycoord,struct _xycoord);
  359. void __far __cdecl _putimage_xy(struct _xycoord, char __huge *, short);
  360.  
  361.  
  362. /* WINDOW COORDINATE SYSTEM */
  363.  
  364. #ifndef _WXYCOORD_DEFINED
  365. /* structure for window coordinate pair */
  366. struct _wxycoord {
  367.     double wx;    /* window x coordinate */
  368.     double wy;    /* window y coordinate */
  369.     };
  370. #define _WXYCOORD_DEFINED
  371. #endif
  372.  
  373.  
  374. /* define real coordinate window - returns non-zero if successful */
  375. short __far __cdecl _setwindow(short,double,double,double,double);
  376.  
  377. /* convert from view to window coordinates */
  378. struct _wxycoord __far __cdecl _getwindowcoord(short,short);
  379. struct _wxycoord __far __cdecl _getwindowcoord_xy(struct _xycoord);
  380.  
  381. /* convert from window to view coordinates */
  382. struct _xycoord __far __cdecl _getviewcoord_w(double,double);
  383. struct _xycoord __far __cdecl _getviewcoord_wxy(const struct _wxycoord __far *);
  384.  
  385. /*    return the window coordinates of the current graphics output
  386.     position as an _wxycoord structure. no error return. */
  387. struct _wxycoord __far __cdecl _getcurrentposition_w(void);
  388.  
  389.  
  390. /* window coordinate entry points for graphics output routines */
  391.  
  392. /*    returns nonzero if successful; otherwise 0    */
  393. short __far __cdecl _arc_w(double, double, double, double, double, double, double, double);
  394. short __far __cdecl _arc_wxy(const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *);
  395.  
  396. /*    returns nonzero if successful; otherwise 0    */
  397. short __far __cdecl _ellipse_w(short, double, double, double, double);
  398. short __far __cdecl _ellipse_wxy(short, const struct _wxycoord __far *, const struct _wxycoord __far *);
  399.  
  400. /*    returns nonzero if successful; otherwise 0    */
  401. short __far __cdecl _floodfill_w(double, double, short);
  402.  
  403. /*    returns pixel value at given point; -1 if unsuccessful. */
  404. short __far __cdecl _getpixel_w(double, double);
  405.  
  406. /*    returns nonzero if successful; otherwise 0    */
  407. short __far __cdecl _lineto_w(double, double);
  408.  
  409. /*    returns the view coordinates of the previous output
  410.     position as a _wxycoord structure. no error return */
  411. struct _wxycoord __far __cdecl _moveto_w(double, double);
  412.  
  413. /*    returns nonzero if successful; otherwise 0    */
  414. short __far __cdecl _pie_w(short, double, double, double, double, double, double, double, double);
  415. short __far __cdecl _pie_wxy(short, const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *);
  416.  
  417. /*    returns nonzero if successful; otherwise 0    */
  418. short __far __cdecl _rectangle_w(short, double, double, double, double);
  419. short __far __cdecl _rectangle_wxy(short, const struct _wxycoord __far *, const struct _wxycoord __far *);
  420.  
  421. /*    returns nonzero if successful; otherwise 0    */
  422. short __far __cdecl _polygon_w(short, const double __far *, short);
  423. short __far __cdecl _polygon_wxy(short, const struct _wxycoord __far *, short);
  424.  
  425. /*    returns previous color; -1 if unsuccessful */
  426. short __far __cdecl _setpixel_w(double, double);
  427.  
  428.  
  429. /* window coordinate image routines */
  430.  
  431. /*    no return value */
  432. void __far __cdecl _getimage_w(double, double, double, double, char __huge *);
  433. void __far __cdecl _getimage_wxy(const struct _wxycoord __far *, const struct _wxycoord __far *, char __huge *);
  434.  
  435. /*    returns the image's storage size in bytes */
  436. long __far __cdecl _imagesize_w(double, double, double, double);
  437. long __far __cdecl _imagesize_wxy(const struct _wxycoord __far *, const struct _wxycoord __far *);
  438.  
  439. /*    no return value */
  440. void __far __cdecl _putimage_w(double, double ,char __huge * ,short);
  441.  
  442.  
  443. /* FONTS */
  444.  
  445. #ifndef _FONTINFO_DEFINED
  446. /* structure for _getfontinfo() */
  447. struct _fontinfo {
  448.     int    type;        /* b0 set = vector,clear = bit map    */
  449.     int    ascent;        /* pix dist from top to baseline    */
  450.     int    pixwidth;    /* character width in pixels, 0=prop    */
  451.     int    pixheight;    /* character height in pixels        */
  452.     int    avgwidth;    /* average character width in pixels    */
  453.     char    filename[81];    /* file name including path        */
  454.     char    facename[32];    /* font name                */
  455. };
  456. #define _FONTINFO_DEFINED
  457. #endif
  458.  
  459.  
  460. /* font function prototypes */
  461. short    __far __cdecl    _registerfonts( const char __far *);
  462. void    __far __cdecl    _unregisterfonts( void );
  463. short    __far __cdecl    _setfont( const char __far * );
  464. short    __far __cdecl    _getfontinfo( struct _fontinfo __far * );
  465. void    __far __cdecl    _outgtext( const char __far * );
  466. short    __far __cdecl    _getgtextextent( const char __far * );
  467. struct _xycoord __far __cdecl _setgtextvector( short, short );
  468. struct _xycoord __far __cdecl _getgtextvector(void);
  469.  
  470.  
  471. #ifdef _WINDOWS
  472. /* QuickWin graphics extension prototypes */
  473. int __far __cdecl _wgclose( int );
  474. int __far __cdecl _wggetactive( void );
  475. int __far __cdecl _wgopen( char __far * );
  476. int __far __cdecl _wgsetactive( int );
  477. #endif
  478.  
  479.  
  480. /* restore default packing */
  481. #pragma pack()
  482.  
  483. #ifdef __cplusplus
  484. }
  485. #endif
  486.